﻿var Recurso_Controller =
{
    InitGrid:
    function Recurso_Controller_InitGrid() {
        var grid =
        {
            Target: "divGridRecurso",
            TableId: "gridRecurso",
            PrimaryKey: "Id",
            Fields:
            [
                { Header: "Nombre", DataField: "Nombre", StyleCss: CssWeb.FormatText, DataFieldEdit: "Nombre", ControlEdit: GridJSON.TextBox, ControlCss: CssWeb.TextBoxMedium },
                { Header: "Abrev.", DataField: "Abreviatura", Width: "80px", StyleCss: CssWeb.FormatCenter, DataFieldEdit: "Abreviatura", ControlEdit: GridJSON.TextBox, ControlCss: CssWeb.TextBoxShort },
                { Header: "Tipo Recurso", DataField: "TipoRecurso", Width: "150px", StyleCss: CssWeb.FormatCenter, DataFieldEdit: "TipoRecursoId", ControlEdit: GridJSON.ComboBox, ControlCss: CssWeb.ComboBoxMedium },
                { Header: "Doc. Ident.", DataField: "DocumentoIdentidad", Width: "80px", StyleCss: CssWeb.FormatText, DataFieldEdit: "DocumentoIdentidad", ControlEdit: GridJSON.TextBox, ControlCss: CssWeb.TextBoxShort },
                { Header: "Costo", DataField: "CostoMoneda", OrderBy: "Costo", Width: "80px", StyleCss: CssWeb.FormatNumber },
                { Header: "Calendario", DataField: "Calendario", Width: "150px", StyleCss: CssWeb.FormatText, DataFieldEdit: "CalendarioId", ControlEdit: GridJSON.ComboBox, ControlCss: CssWeb.ComboBoxMedium },
                { Header: "Estado", DataField: "Estado", Width: "150px", StyleCss: CssWeb.FormatCenter, DataFieldEdit: "EstadoId", ControlEdit: GridJSON.ComboBox, ControlCss: CssWeb.ComboBoxMedium }
            ],
            ShowPaging: DatosControles.GridJSON_ShowPagging,
            ChooseShowPaging: DatosControles.GridJSON_ChoosePagging,
            TotalRecords: 0,
            PageIndex: 1,
            OrderBy: "Nombre Asc",
            RecordSearch: { Nombre: "", Abreviatura: "", Descripcion: "", TipoRecursoId: "",  DocumentoIdentidad: "", CalendarioId: "", EstadoId: "" },
            FunctionLoadGrid: Recurso_Controller.ListarGridJSON,
            FunctionExportToExcel: Recurso_Controller.ExportarExcelGrid,
            ButtonsActionRecord:
            [
                { styleCss: CssWeb.GridJSON_IconEdit, toolTip: DatosControles.GridJSON_ToolTipEditar, functionAction: Recurso_Controller.EditarRegistro }
            ]
        };

        Recurso_Controller.Grid = grid;
    },

    Grid: {},

    ListarGridJSON:
    function Recurso_Controller_ListarGridJSON(recordSearch, orderBy, cantidadMostrar, paginaActual) {
        Recurso_Controller.Grid.RecordSearch = recordSearch;
        Recurso_Controller.Grid.ChooseShowPaging = cantidadMostrar;
        Recurso_Controller.Grid.PageIndex = paginaActual;
        Recurso_Controller.Grid.OrderBy = orderBy;

        Recurso_Controller.ListarGridPaging();
    },

    ListarGridPaging:
    function Recurso_Controller_ListarGridPaging() 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "ConsultarRecursos.aspx/Listar",
            JSON.stringify
            ({
                registroBusqueda: Recurso_Controller.Grid.RecordSearch,
                paginaActual: Recurso_Controller.Grid.PageIndex,
                cantidadMostrar: Recurso_Controller.Grid.ChooseShowPaging,
                orderBy: Recurso_Controller.Grid.OrderBy,
                primerCarga: !Global_UI.Exists(Recurso_Controller.Grid.TableId)
            }),
            Recurso_Controller.ListarGridPaging_CallBack
        );
    },

    ListarGridPaging_CallBack:
    function Recurso_Controller_ListarGridPaging_CallBack(response) {
        var view = response.d;

        Recurso_Controller.Grid.TotalRecords = view.TotalRegistros;
        GridJSON.DataBind(Recurso_Controller.Grid, view.Recursos, view.GridJSONDataSources);

        Global_UI.BlockUI(false);
    },

    ExportarExcelGrid:
    function Recurso_Controller_ExportarExcelGrid() 
    {
        Global_UI.BlockUI(true);

        Global_UI.AjaxPOST
        (
            "ConsultarRecursos.aspx/ExportarExcel",
            JSON.stringify
            ({
                registroBusqueda: Recurso_Controller.Grid.RecordSearch,
                gridFields: Recurso_Controller.Grid.Fields
            }),
            Recurso_Controller.ExportarExcelGrid_CallBack
        );
    },

    ExportarExcelGrid_CallBack:
    function Recurso_Controller_ExportarExcelGrid_CallBack(response) 
    {
        Global_UI.MostrarExportacionExcel(response.d);

        Global_UI.BlockUI(false);
    },

    EditarRegistro:
    function Recurso_Controller_EditarRegistro(id) {
        Global_UI.BlockUI(true);

        Global_UI.ResponseRedirect("RegistrarRecurso.aspx?Id=" + id);
    },

    GrabarRegistro:
    function Recurso_Controller_GrabarRegistro() 
    {
        if (!Global_UI.ValidationGroupJquery("formRegistrarRecurso")) return false;

        Global_UI.BlockUI(true);

        var registro =
        {
            Id: $("#hiddenId").val(),
            Nombre: $("#txtNombre").val().trim(),
            TipoRecursoId: $("#ddlTipoRecurso").val(),
            Abreviatura: $("#txtAbreviatura").val().trim(),
            TipoDocumentoIdentidadId: $("#ddlTipoDocumentoIdentidad").val(),
            DocumentoIdentidad: $("#txtDocumentoIdentidad").val().trim(),
            TipoCostoId: $("#hiddenTipoCostoId").val(), 
            Costo: $("#txtCosto").val().trim(),
            CalendarioId: $("#ddlCalendario").val(),
            EstadoId: $("#ddlEstado").val()
        };

        Global_UI.AjaxPOST
        (
            "RegistrarRecurso.aspx/Grabar",
            JSON.stringify
            ({
                registro: registro
            }),
            Recurso_Controller.GrabarRegistro_CallBack
        );
    },

    GrabarRegistro_CallBack:
    function Recurso_Controller_GrabarRegistro_CallBack(response) {
        var registro = response.d;

        $("#hiddenId").val(registro.Id);

        Global_UI.BlockUI(false);

        Global_UI.Alert
        (
            MensajesUsuario.RegistroSatisfactorio,
            MensajesUsuario.TituloMensajeSistema
        );
    },

    CargarTipoCosto:
    function Recurso_Controller_CargarTipoCosto() 
    {
        Global_UI.BlockUI(true);

        var tipoRecursoId = $("#ddlTipoRecurso").val();

        if(tipoRecursoId == "") 
        {
            $("#lblTipoCosto").html("");
            Global_UI.BlockUI(false);
            return;
        }

        Global_UI.AjaxPOST
        (
            "RegistrarRecurso.aspx/TipoCostoPorTipoRecurso",
            JSON.stringify
            ({
                tipoRecursoId: tipoRecursoId
            }),
            Recurso_Controller.CargarTipoCosto_CallBack
        );
    },

    CargarTipoCosto_CallBack:
    function Recurso_Controller_CargarTipoCosto_CallBack(response) 
    {
        var tipoCosto = response.d;

        $("#hiddenTipoCostoId").val(tipoCosto.Id);
        $("#lblTipoCosto").html(tipoCosto.Nombre);

        Global_UI.BlockUI(false);
    }
};

var ConsultarRecursos_ASPX =
{
    Load:
    function ConsultarRecursos_ASPX_Load() 
    {
        Global_UI.BlockUI(true);

        $("#btnConsultar").click(function () { GridJSON.SearchRecordsGridJSON(Recurso_Controller.Grid); });
        $("#btnNuevo").click(function () { Global_UI.BlockUI(true); Global_UI.ResponseRedirect("RegistrarRecurso.aspx"); });

        Recurso_Controller.InitGrid();
        Recurso_Controller.ListarGridPaging();
    }
};

var RegistrarRecurso_ASPX =
{
    Load:
    function RegistrarRecurso_ASPX_Load() 
    {
        $("#ddlTipoRecurso").change(function () { Recurso_Controller.CargarTipoCosto(); RegistrarRecurso_ASPX.CambiarTipoRecurso(); });
        RegistrarRecurso_ASPX.CambiarTipoRecurso();

        var txtCosto = $("#txtCosto");
        txtCosto.attr("regularexpression",RegularExpression.DosDecimales);
        txtCosto.attr("messageregex",MensajesUsuario.NumeroInvalido);

        $("#btnGrabar").click(function () { Recurso_Controller.GrabarRegistro();  });
        $("#btnCancelar").click
        (
            function () 
            {
                Global_UI.Confirm
                (
                     MensajesUsuario.AbandonarPagina,
                     MensajesUsuario.TituloMensajeSistema,
                     function () { Global_UI.ResponseRedirect("ConsultarRecursos.aspx"); }
                );
            }
        );

        if($("#hiddenId").val() != "0") return;

        RegistrarRecurso_ASPX.SetCalendarioGeneral();
    },

    CambiarTipoRecurso:
    function RegistrarRecurso_ASPX_CambiarTipoRecurso() 
    {
        //Setear Documento Identidad
        $("#filaDocumentoIdentidad").hide();

        $("#ddlTipoDocumentoIdentidad").removeClass("required");
        $("#txtDocumentoIdentidad").removeClass("required");

        //Segun tipo de recurso se muestran opciones
        var tipoRecursoId = $("#ddlTipoRecurso").val();

        if (tipoRecursoId == Parametros.TipoRecurso_Humano) 
        {
            $("#filaCalendario").show();
            $("#filaDocumentoIdentidad").show();

            $("#ddlTipoDocumentoIdentidad").addClass("required");
            $("#txtDocumentoIdentidad").addClass("required");

            return;
        }

        $("#ddlTipoDocumentoIdentidad").val("");
        $("#txtDocumentoIdentidad").val("");

        if(tipoRecursoId == Parametros.TipoRecurso_PorHora)
        {
            $("#filaCalendario").show();
            return;
        }

        RegistrarRecurso_ASPX.SetCalendarioGeneral();
    },

    SetCalendarioGeneral:
    function RegistrarRecurso_ASPX_SetCalendarioGeneral() 
    {
        //Setear Calendario
        $("#filaCalendario").hide();
        var calendarioId = Global_UI.SearchTextInComboBox("ddlCalendario",Parametros.Calendario_General);
        $("#ddlCalendario").val(calendarioId);
    }
};